{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "os.chdir(r'I:\\拉钩数据分析实训营\\数据分析实战训练营\\8数据挖掘算法与实战\\2.无监督学习算法\\作业')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 补全代码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Channel</th>\n",
       "      <th>Region</th>\n",
       "      <th>Fresh</th>\n",
       "      <th>Milk</th>\n",
       "      <th>Grocery</th>\n",
       "      <th>Frozen</th>\n",
       "      <th>Detergents_Paper</th>\n",
       "      <th>Delicassen</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>12669</td>\n",
       "      <td>9656</td>\n",
       "      <td>7561</td>\n",
       "      <td>214</td>\n",
       "      <td>2674</td>\n",
       "      <td>1338</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>7057</td>\n",
       "      <td>9810</td>\n",
       "      <td>9568</td>\n",
       "      <td>1762</td>\n",
       "      <td>3293</td>\n",
       "      <td>1776</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>6353</td>\n",
       "      <td>8808</td>\n",
       "      <td>7684</td>\n",
       "      <td>2405</td>\n",
       "      <td>3516</td>\n",
       "      <td>7844</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>13265</td>\n",
       "      <td>1196</td>\n",
       "      <td>4221</td>\n",
       "      <td>6404</td>\n",
       "      <td>507</td>\n",
       "      <td>1788</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>22615</td>\n",
       "      <td>5410</td>\n",
       "      <td>7198</td>\n",
       "      <td>3915</td>\n",
       "      <td>1777</td>\n",
       "      <td>5185</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Channel  Region  Fresh  Milk  Grocery  Frozen  Detergents_Paper  Delicassen\n",
       "0        2       3  12669  9656     7561     214              2674        1338\n",
       "1        2       3   7057  9810     9568    1762              3293        1776\n",
       "2        2       3   6353  8808     7684    2405              3516        7844\n",
       "3        1       3  13265  1196     4221    6404               507        1788\n",
       "4        2       3  22615  5410     7198    3915              1777        5185"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv('Wholesale customers data.csv')\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## #查看数据缺失值---数据并没有缺失值，数据完整性比较好\n",
    "#请补全代码（5分）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 440 entries, 0 to 439\n",
      "Data columns (total 8 columns):\n",
      "Channel             440 non-null int64\n",
      "Region              440 non-null int64\n",
      "Fresh               440 non-null int64\n",
      "Milk                440 non-null int64\n",
      "Grocery             440 non-null int64\n",
      "Frozen              440 non-null int64\n",
      "Detergents_Paper    440 non-null int64\n",
      "Delicassen          440 non-null int64\n",
      "dtypes: int64(8)\n",
      "memory usage: 27.6 KB\n"
     ]
    }
   ],
   "source": [
    "data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Channel</th>\n",
       "      <th>Region</th>\n",
       "      <th>Fresh</th>\n",
       "      <th>Milk</th>\n",
       "      <th>Grocery</th>\n",
       "      <th>Frozen</th>\n",
       "      <th>Detergents_Paper</th>\n",
       "      <th>Delicassen</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.322727</td>\n",
       "      <td>2.543182</td>\n",
       "      <td>12000.297727</td>\n",
       "      <td>5796.265909</td>\n",
       "      <td>7951.277273</td>\n",
       "      <td>3071.931818</td>\n",
       "      <td>2881.493182</td>\n",
       "      <td>1524.870455</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.468052</td>\n",
       "      <td>0.774272</td>\n",
       "      <td>12647.328865</td>\n",
       "      <td>7380.377175</td>\n",
       "      <td>9503.162829</td>\n",
       "      <td>4854.673333</td>\n",
       "      <td>4767.854448</td>\n",
       "      <td>2820.105937</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>55.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>25.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3127.750000</td>\n",
       "      <td>1533.000000</td>\n",
       "      <td>2153.000000</td>\n",
       "      <td>742.250000</td>\n",
       "      <td>256.750000</td>\n",
       "      <td>408.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>8504.000000</td>\n",
       "      <td>3627.000000</td>\n",
       "      <td>4755.500000</td>\n",
       "      <td>1526.000000</td>\n",
       "      <td>816.500000</td>\n",
       "      <td>965.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>16933.750000</td>\n",
       "      <td>7190.250000</td>\n",
       "      <td>10655.750000</td>\n",
       "      <td>3554.250000</td>\n",
       "      <td>3922.000000</td>\n",
       "      <td>1820.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>112151.000000</td>\n",
       "      <td>73498.000000</td>\n",
       "      <td>92780.000000</td>\n",
       "      <td>60869.000000</td>\n",
       "      <td>40827.000000</td>\n",
       "      <td>47943.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          Channel      Region          Fresh          Milk       Grocery  \\\n",
       "count  440.000000  440.000000     440.000000    440.000000    440.000000   \n",
       "mean     1.322727    2.543182   12000.297727   5796.265909   7951.277273   \n",
       "std      0.468052    0.774272   12647.328865   7380.377175   9503.162829   \n",
       "min      1.000000    1.000000       3.000000     55.000000      3.000000   \n",
       "25%      1.000000    2.000000    3127.750000   1533.000000   2153.000000   \n",
       "50%      1.000000    3.000000    8504.000000   3627.000000   4755.500000   \n",
       "75%      2.000000    3.000000   16933.750000   7190.250000  10655.750000   \n",
       "max      2.000000    3.000000  112151.000000  73498.000000  92780.000000   \n",
       "\n",
       "             Frozen  Detergents_Paper    Delicassen  \n",
       "count    440.000000        440.000000    440.000000  \n",
       "mean    3071.931818       2881.493182   1524.870455  \n",
       "std     4854.673333       4767.854448   2820.105937  \n",
       "min       25.000000          3.000000      3.000000  \n",
       "25%      742.250000        256.750000    408.250000  \n",
       "50%     1526.000000        816.500000    965.500000  \n",
       "75%     3554.250000       3922.000000   1820.250000  \n",
       "max    60869.000000      40827.000000  47943.000000  "
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Fresh列到Delicassen列的数据数量级大小差别很大，在聚类前需要进行标准化\n",
    "\n",
    "关于标准化、归一化、Normalizer的总结\n",
    "一、数据标准化 StandardScaler (基于特征矩阵的列，将属性值转换至服从正态分布) 标准化是依照特征矩阵的列处理数据，其通过求z-score的方法，将样本的特征值转换到同一量纲下 常用与基于正态分布的算法，比如回归\n",
    "\n",
    "二、数据归一化 MinMaxScaler （区间缩放，基于最大最小值，将数据转换到0,1区间上的） 提升模型收敛速度，提升模型精度 常见用于神经网络\n",
    "\n",
    "三、Normalizer （基于矩阵的行，将样本向量转换为单位向量） 其目的在于样本向量在点乘运算或其他核函数计算相似性时，拥有统一的标准 常见用于文本分类和聚类、logistic回归中也会使用，有效防止过拟合"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import normalize"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.70833271, 0.53987376, 0.42274083, 0.01196489, 0.14950522,\n",
       "        0.07480852],\n",
       "       [0.44219826, 0.61470384, 0.59953989, 0.11040858, 0.20634248,\n",
       "        0.11128583],\n",
       "       [0.39655169, 0.5497918 , 0.47963217, 0.15011913, 0.2194673 ,\n",
       "        0.48961931],\n",
       "       ...,\n",
       "       [0.36446153, 0.38846468, 0.7585445 , 0.01096068, 0.37223685,\n",
       "        0.04682745],\n",
       "       [0.93773743, 0.1805304 , 0.20340427, 0.09459392, 0.01531   ,\n",
       "        0.19365326],\n",
       "       [0.67229603, 0.40960124, 0.60547651, 0.01567967, 0.11506466,\n",
       "        0.01254374]])"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data1 = normalize(data.iloc[:,2:])\n",
    "data1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 适用轮廓系数找到最优K"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.cluster import KMeans \n",
    "from sklearn.metrics import silhouette_score #轮廓系数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1f4e44c20f0>]"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "clusters = [2,3,4,5,6]\n",
    "score = []\n",
    "model = []\n",
    "for i in clusters:\n",
    "    cluster = KMeans(n_clusters= i,random_state=0).fit(data1)\n",
    "    score.append(silhouette_score(data1,cluster.labels_)) #计算得到所有样本轮廓系数的均值\n",
    "    model.append(cluster)\n",
    "plt.xlabel('clusters_num')\n",
    "plt.ylabel('score')\n",
    "plt.axvline(pd.DataFrame(score).idxmax()[0] + 2,ls = ':')\n",
    "plt.plot(clusters,score)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 建模及可视化分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Fresh</th>\n",
       "      <th>Milk</th>\n",
       "      <th>Grocery</th>\n",
       "      <th>Frozen</th>\n",
       "      <th>Detergents_Paper</th>\n",
       "      <th>Delicassen</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.264083</td>\n",
       "      <td>0.479221</td>\n",
       "      <td>0.661907</td>\n",
       "      <td>0.134295</td>\n",
       "      <td>0.251450</td>\n",
       "      <td>0.105409</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.869573</td>\n",
       "      <td>0.174954</td>\n",
       "      <td>0.226061</td>\n",
       "      <td>0.224904</td>\n",
       "      <td>0.050075</td>\n",
       "      <td>0.074002</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Fresh      Milk   Grocery    Frozen  Detergents_Paper  Delicassen\n",
       "0  0.264083  0.479221  0.661907  0.134295          0.251450    0.105409\n",
       "1  0.869573  0.174954  0.226061  0.224904          0.050075    0.074002"
      ]
     },
     "execution_count": 124,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kmeans = model[0]\n",
    "kmean_center_data = pd.DataFrame(kmeans.cluster_centers_,columns=['Fresh','Milk','Grocery','Frozen','Detergents_Paper','Delicassen'])\n",
    "kmean_center_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "km_label = pd.Series(kmeans.labels_)\n",
    "label_valcount = km_label.value_counts(1)\n",
    "label_valindex = label_valcount.index\n",
    "plt.pie(label_valcount,autopct='%.2f%%')\n",
    "plt.legend(label_valindex)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([0, 1]), [Text(0, 0, '0'), Text(1, 0, '1')])"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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KfTv358BAwbw7bffcv311xMXF0efPn3Izc0FoKSkhNtvv53Y2Fji4uJ44403AFixYgVXXnklCQkJ3HTTTZSUlAAQFRXFww8/TEJCAnPnziUhIaHyvfPz809aFk25iIif8vLyThmgGzduJDc3l7Zt2zJ58mR69OhBZmYmq1atYty4ceTk5DB79mzCw8P54ovy6Z39+/fzzTffMGfOHLKysmjVqhV//vOfeeqpp5gxo7y7SLt27di4cSMAWVlZ5OTk4PP5ePnll7n99tvr/8QbEV2hi0hAJk6cSHx8PL169QJg4MCBtG3bFoBPP/2UsWPHAtC/f3/27dvHoUOHyMrKYuLEiZXHaNOmDZ999hlbtmwhOTkZn8/HokWL+Pe//9un5je/+U3l67vuuouXX36ZsrIyMjIyuPXWW8/GqTYaukIXEb907969cooEID09nW+++abye0JbtWoV0HGdcwwcOJDFixfXuL3qcW+44QYee+wx+vfvT8+ePWnXrl1A7+lVukIXEb/079+f0tJSnnvuucp133//fY1j+/bty2uvvQbA6tWrad++PT/72c8YOHAg6enpleP2799Pnz59WLNmDQUFBQAcPnyYHTt21HjcsLAwBg8ezL333qvplhroCl2kkXptwCcB7Rdot0UzIzMzkwceeIAnnniCiIiIyjnvI0eOnDR21qxZ3HHHHcTFxXH++eezaNEiAKZPn87EiROJiYkhNDSUmTNnMmrUKBYuXMjo0aP54YcfAJgzZw6XX355jXWMGTOGt956i0GDBgV0Hl6m9rkijYTa55abN28eBw8eZPbs2Q1dSr073fa5ukIXkUZj5MiR7Ny5k1WrVjV0KeckBbqINBpvvfVWQ5dwTtOHoiIiHqFAFxHxCAW6iIhHKNBFRDxCH4qKNFLNf3VlQPttrWX9Fdtq2/JfoaGhxMbGVi5nZmYSFRUVUB0SfAp0EfFby5YtycnJqXGbcw7nHCEh+sO/oegnLyIBKywspGvXrowbN46YmBh2797N1KlTiYmJITY2loyMDABmzJiBz+fD5/PRoUOHysf2X331VZKSkvD5fNxzzz2VPc9bt27No48+Snx8PH369OHrr79usHNsTBToIuK3I0eOVAbziW8pys/P57777iMvL4/s7GxycnLYtGkTWVlZTJ06la+++oq0tDRycnJYvXo1bdu2ZdKkSWzdupWMjAzWrFlDTk4OoaGhlf1fDh8+TJ8+fdi0aRNXX301L7zwQkOedqOhKRcR8Vv1KZfCwkI6depEnz59gPK2uaNHjyY0NJSf//znXHPNNaxfv56UlBScc9x2221MmTKFnj17Mn/+fDZs2FDZfvfIkSNceOGFALRo0YLhw4cD0LNnTz744IOze6KNlAL9HBO7KLbuQTXw5/sgReqDv21zZ82aRWRkZOV0i3OO8ePH86c//eknY5s3b46ZAeUfxNbX19p5jaZcRCRo+vbtS0ZGBmVlZRQXF/Pxxx+TlJTEP/7xD7KysnjmmWcqxw4YMIClS5eyd+9eAL799tuTvthCTp+u0EUaqaNZawParz67LY4cOZK1a9cSHx+PmfHEE09w0UUX8dRTT7Fnzx6SkpIASElJIS0tjTlz5jBo0CCOHz9O8+bNSU9Pp1OnTvVWn9epfe45RlMuUhu1z216Trd9rqZcREQ8QoEuIuIRCnQREY9QoIuIeIQCXUTEIxToIiIeofvQRRqpT+ZsDGy/WtZPfL5/4MXIOUFX6CLit9DQUHw+H927dyc+Pp4nn3yS48ePn3KfwsJC/va3v52lCmuWk5PD8uXLT3u/wsJCWrZsic/nIzo6mgkTJtR5vg3Jr0A3syFmtt3MCsxsWi1jbjazLWaWZ2YN+9sTkXpxojlXXl4eH3zwAe+99x6PPfbYKfcJJNCD3bsl0EAH+MUvfkFOTg65ubls2bKFzMzMoNZ2QjDOuc5AN7NQIB0YCkQDo80sutqYLsAjQLJzrjvw+zOuTETOaRdeeCELFixg/vz5OOcoKytj6tSp9OrVi7i4OP76178CMG3aND755BN8Ph9PP/10reNWr15N3759SUlJITo6muPHj3PffffRrVs3Bg4cyLBhw1i6dCkAGzZs4JprrqFnz54MHjyYr776CoB+/frx8MMPk5SUxOWXX84nn3zCjz/+yIwZM8jIyMDn85GRkcFHH31U2Qa4R48efPfdd3Web7NmzbjqqqsoKCjghRdeoFevXsTHx3PDDTfw/fffA5CamsqECRNITEzk8ssv55133gHw+5zPlD9z6ElAgXNuF4CZLQFGAFuqjPktkO6c2w/gnNt7xpWJyDnvsssuo6ysjL179/L2228THh7O+vXr+eGHH0hOTmbQoEHMnTuXefPmVYbbggULahwHsHHjRjZv3kznzp1ZunQphYWFbNmyhb1793LFFVdwxx13cPToUSZPnszbb79NREQEGRkZPProo7z00ktA+ZXuunXrWL58OY899hhZWVmkpaWRnZ3N/PnzAfj1r39Neno6ycnJlJSUEBYWVue5fv/996xcuZK0tDSSkpL47W9/C8D06dN58cUXmTx5MlD+F8m6devYuXMn1157LQUFBbzyyit+nfOZ8ifQOwC7qywXAb2rjbkcwMzWAKHALOfcP6sfyMzuBu4GuPTSSwOpV0TOUStWrCA3N7fyKvrgwYPk5+fTokULv8clJSVVBtunn37KTTfdREhICBdddBHXXnstANu3b2fz5s0MHDgQKL/6vfjiiyuPP2rUKKC8j3phYWGNtSYnJzNlyhTGjBnDqFGjiIyMrPW8du7cic/nw8wYMWIEQ4cO5aOPPmL69OkcOHCAkpISBg8eXDn+5ptvJiQkhC5dunDZZZexbds2v8/5TAXrLpdmQBegHxAJfGxmsc65A1UHOecWAAugvDlXkN5bRBrIrl27CA0N5cILL8Q5x7PPPntSuEH5tEJVpxrnT2915xzdu3dn7dqau02ed955wKn7qE+bNo3rrruO5cuXk5yczPvvv0+3bt1qHHtiDr2q1NRUMjMziY+PZ+HChSed44k+7lWXz/Sc/eVPoO8BOlZZjqxYV1UR8Llz7ijwpZntoDzg1welShH5ib7TEwLaL1jdFouLi5kwYQKTJk3CzBg8eDDPPfcc/fv3p3nz5uzYsYMOHTpwwQUXnDRHXdu46pKTk1m0aBHjx4+nuLiY1atXc+utt9K1a1eKi4tZu3YtV155JUePHmXHjh1079691lqr17Bz505iY2OJjY1l/fr1bNu2rdZAr8l3333HxRdfzNGjR3nttddOqv/vf/8748eP58svv2TXrl107drV73M+U/4E+nqgi5l1pjzIbwFurTYmExgNvGxm7SmfgtkVxDpF5Bxw4jtFjx49SrNmzRg7dixTpkwB4K677qKwsJCEhAScc0RERJCZmUlcXByhoaHEx8eTmprK7373uxrHVXfDDTewcuVKoqOj6dixIwkJCYSHh9OiRQuWLl3K/fffz8GDBzl27Bi///3vTxno1157LXPnzsXn8/HII4/w6aef8uGHHxISEkL37t0ZOnToaf0cZs+eTe/evYmIiKB3794n/c/i0ksvJSkpiUOHDvH8888TFhZW688m2Pzqh25mw4D/Q/n8+EvOucfNLA3Ids4ts/K/MZ4EhgBlwOPOuSWnOqb6oddM/dClNk2xH3pJSQmtW7dm3759JCUlsWbNGi666KKGLqtWqampDB8+nBtvvDEoxzvdfuh+zaE755YDy6utm1HltQOmVPwnIhIUw4cP58CBA/z444/88Y9/PKfD/FygR/9F5JxV/QPV+vLFF18wduzYk9add955fP7556d1nIULFwaxqtOnQBeRJi82NvYnd7I0RurlIiLiEQp0ERGPUKCLiHiE5tBFGqkPHrwtsP1qWf9gxjt17hsaGkpsbGzlfejjxo3jgQceICSk9mvDwsJChg8fzubNm8nOzuaVV17hmWeeCah2OTUFuoj47UT7XIC9e/dy6623cujQoTpb6J6QmJhIYmKNt1BLEGjKRUQC4m/73KpWr17N8OHDgfKHhm6//XZiY2OJi4vjjTfeAODee+8lMTGR7t27M3PmzMp9p02bRnR0NHFxcTz00ENA+WP2MTExxMfHc/XVVwOnblXbr18/brzxRrp168aYMWPw58HKxkRX6CISMH/a51ZvVnXC7NmzCQ8P54svyp9y3r9/PwCPP/44bdu2paysjAEDBpCbm0uHDh1466232LZtG2bGgQMHAEhLS+P999+nQ4cOletefPHFWlvV/utf/yIvL49LLrmE5ORk1qxZwy9/+cv6/SGdRbpCF5GgWLFiBa+88go+n4/evXuzb98+8vPzax2flZXFxIkTK5fbtGkDwOuvv05CQgI9evQgLy+PLVu2EB4eTlhYGHfeeSdvvvkm559/PlDewCs1NZUXXniBsrKyOutISkoiMjKSkJAQfD5fre11GytdoYtIwPxpn3s6ofnll18yb9481q9fT5s2bUhNTaW0tJRmzZqxbt06Vq5cydKlS5k/fz6rVq3i+eef5/PPP+fdd9+lZ8+ebNiw4ZStak+01oVTt9dtrHSFLiIBqa197tGjRwHYsWMHhw8frnX/gQMHkp6eXrm8f/9+Dh06RKtWrQgPD+frr7/mvffeA8rn2w8ePMiwYcN4+umn2bRpE1DeBrd3796kpaURERHB7t27T7sOL9EVukgjNfDJVwPa70y6LQbSPrc206dPZ+LEicTExBAaGsrMmTMZNWoUPXr0oFu3bnTs2JHk5GSgvP/4iBEjKC0txTnH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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "kmean_center_data.plot(kind='bar')\n",
    "plt.xticks(rotation = 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
